1. Field of the Invention
The present invention generally relates to a method of setting up and querying a large scale software configuration management (SCM) repository of source code for rapid retrieval of fine-grained program artifacts.
2. Description of the Related Art
Tools have been developed for searching computer program storage repositories containing the source code to a large software system. These tools allow the repository to be accessed by a query which describes a set of relevant properties being sought. The tool then returns the set of program artifacts that possess at least some of the properties contained in the query. Especially for large software programs, such tools are useful for various purposes, including an understanding of the program, debugging, and visual separation of concerns.
However, a conventional method of implementing such a search is extremely slow. Even standard techniques for searching text libraries can result in an intolerably long time to identify the program artifacts that are relevant to a given query. Conventional search tools also operate in an environment of coarse-grained artifacts.
As an example of conventional software query tools, the eColabra/Asset Locator® system, part of IBM's TeamConnect® system, performs an information retrieval based index and search of all program assets located on a network file system. Asset Locator focuses on identifying, summarizing, and searching for complete software components, which is a very coarse-grained artifact relative to the fine-grained artifacts of the present invention, to be explained shortly.
Additionally, conventional search tools require a global analysis/global update. That is, these conventional tools produce a global usage database, which uses information generated by having access to an entire software system simultaneously, rather than allowing summaries to be updated incrementally using only local information.
Most conventional source code repository search tools are geared towards the specific intended purpose of either component reuse or asset management and are unable to target specifically a repository viewpoint and a search within a single project as best appropriate for the various other purposes of searching the repository, such as program understanding, debugging, and separation of concerns. Each purpose potentially requires a unique viewpoint.